#define _CRT_SECURE_NO_WARNINGS
//作者：爱吃糖的boy
#include<stdio.h>
//冒泡排序1
//void bubble_sort(int* p, int sz)
//{
//	for (int i = 0; i < sz - 1; i++) //趟数
//	{
//		for (int j = 0; j < sz - 1 - i; j++) //一趟冒泡排序的过程
//		{
//			if (p[j] > p[j + 1])
//			{
//				int tmp = p[j];
//				p[j] = p[j + 1];
//				p[j + 1] = tmp;
//			}
//		}
//	}
//}

//优化1
void bubble_sort(int* p, int sz)
{
	for (int i = 0; i < sz - 1; i++) //趟数
	{
		int flag = 1;//假设这⼀趟已经有序了
		for (int j = 0; j < sz - 1 - i; j++) //一趟冒泡排序的过程
		{
			if (p[j] > p[j + 1])
			{
				flag = 0;//发⽣交换就说明，⽆序
				int tmp = p[j];
				p[j] = p[j + 1];
				p[j + 1] = tmp;
			}
		}
		if (flag == 1) //这⼀趟没交换就说明已经有序，后续⽆序排序了
			break;
	}
}

void Print(int* p, int sz)
{
	for (int i = 0; i < sz; i++)
	{
		printf("%d ", p[i]);
	}
}

int main()
{
	//冒泡排序的核⼼思想就是：两两相邻的元素进⾏⽐较
	int arr[] = {3,1,7,5,8,9,0,2,4,6};
	int sz = sizeof(arr) / sizeof(arr[0]);
	bubble_sort(arr, sz);
	Print(arr, sz);
	return 0;
}